package com.wlb.address.split.process;

import com.wlb.address.split.domain.BracketIncludeInfo;
import com.wlb.address.split.domain.GeoTerm;

import java.util.List;
import java.util.Queue;

/**
 * User: xiaotong.dxt
 * Date: 13-8-8
 * Time: 上午10:58
 * To change this template use File | Settings | File Templates.
 */
public abstract class AddressSpliter {


    /**
     * 对地址进行标准化
     *
     * @param address
     */
    public abstract String addrStand(String address);

    /**
     * 行政区域去重
     *
     * @param address
     * @return
     */
    public abstract String adminAreaRepeat(String address);

    /**
     * 提取括号中的内容
     *
     * @param address
     * @param bracketIncludeInfos
     * @return
     */
    public abstract String fetchBracketIncludeAddr(String address, Queue<BracketIncludeInfo> bracketIncludeInfos);

    /**
     * 对原始词条进行切词，同时提取其中的楼栋号，单元号之类的
     *
     * @param word
     * @param termOut
     * @return
     */
    public abstract String wordSplitUnitNo(String word, Queue<GeoTerm> termOut);

     /**
      *对分词后的结果进行必要的合并
      */
     public abstract String doFusion(String word, List<GeoTerm> termOut, FusionResultSet fusionResults);


}
